﻿use DangKyMonHocHocPhi;

GO

CREATE TRIGGER [dbo].[AutoIncrementKindOfSubjectId]
ON [dbo].[LOAIMONHOC]
FOR INSERT
AS
BEGIN
DECLARE @MAXValue VARCHAR(15),@NEWValue VARCHAR(15),@NEW_ID VARCHAR(15), @OLD_ID VARCHAR(15);
--Lấy giá trị lớn nhất của FacultyID trong bảng KHOA
SELECT @MAXValue=MAX(MaLoaiMH) FROM LOAIMONHOC
--Lấy giá trị ID được chèn vào từ bên ngoài (bất kì, không quan trọng)
select @OLD_ID = MaLoaiMH from INSERTED
--Lấy phần chuỗi số đằng sau TL rồi tăng lên 1 đơn vị
SET @NEWValue= REPLACE(@MaxValue,'LMH','')+1
-- Kiểm tra NEWValue nếu < 100
-- Nếu <100, thêm vào số 0 sao cho NEWValue có độ dài = 9
SET @NEW_ID = 'LMH'+
    CASE
       WHEN LEN(@NEWValue)<6
          THEN REPLICATE('0',6-LEN(@newValue))
          ELSE ''
       END +
       @NEWValue
--Thay thế giá trị Id từ bên ngoài bằng Id vừa được tạo
UPDATE LOAIMONHOC SET MaLoaiMH = @NEW_ID WHERE MaLoaiMH = @OLD_ID
END

GO

CREATE PROCEDURE [dbo].[DeleteKindOfSubjectFromDatabase]
(
	@MaLoaiMH nvarchar(20)
)
AS
BEGIN
	Delete LOAIMONHOC where MaLoaiMH = @MaLoaiMH
	END
	RETURN
GO

Create PROCEDURE [dbo].[GetAllKindOfSubjectFromDatabase]
AS
BEGIN
	Select * from LOAIMONHOC
	END
	RETURN
GO

CREATE PROCEDURE [dbo].[InsertKindOfSubjectToDatabase]
(
	@MaLoaiMH nvarchar(20),
	@TenLoai nvarchar(255),
	@SoTietQuyDoi int,
	@SoTienTrenTC int
)
AS
BEGIN
	Insert into LOAIMONHOC values (@MaLoaiMH, @TenLoai, @SoTietQuyDoi, @SoTienTrenTC)
	END
	RETURN
GO

CREATE PROCEDURE [dbo].[UpdateKindOfSubjectToDatabase]
(
	@MaLoaiMH nvarchar(20),
	@TenLoai nvarchar(255),
	@SoTietQuyDoi int,
	@SoTienTrenTC int
)
AS
BEGIN
	Update LOAIMONHOC Set
	TenLoai= @TenLoai,
	SoTietQuyDoi= @SoTietQuyDoi,
	SoTienTrenTC=@SoTienTrenTC
	where MaLoaiMH = @MaLoaiMH
	END
	RETURN
GO

CREATE PROCEDURE [dbo].[GetKindOfSubjectByIdFromDatabase]
(
	@MaLoaiMH nvarchar(20)
)
AS
BEGIN
	Select * from LOAIMONHOC where MaLoaiMH = @MaLoaiMH
	END
	RETURN
GO



